package model.bo;

import java.text.ParseException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

public class EmpregadoBOTestDataDesligamento {
    
    public EmpregadoBOTestDataDesligamento() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }
    
    @Before
    public void setUp() {
    }
    
    @After
    public void tearDown() {
    }
    
    /**
     * Testes do método que verifica se a data de desligamento é posterior à data de admissão.
     * 
     * @author Zeno
     * 
     */
    
    @Test(expected = ParseException.class)
    public void testVerificaDataDesligamentoComDataDesligamentoInvalida() throws EmpregadoException, Exception, ParseException {
        String dataDesligamento = "508317";
        String dataAdmissao = "11/03/1997";
        dataDesligamentoInvalida(dataDesligamento, dataAdmissao);
    }
    
    @Test(expected = ParseException.class) 
    public void testVerificaDataDesligamentoComDataAdmissaoInvalida() throws EmpregadoException, Exception, ParseException {
        String dataDesligamento = "03/09/2008";
        String dataAdmissao = "09582309";
        dataDesligamentoInvalida(dataDesligamento, dataAdmissao);
    }
    
    @Test(expected = EmpregadoException.class) 
    public void testDataDesligamentoIgualDataAdmissao() throws EmpregadoException, Exception, ParseException {
        String dataDesligamento = "20/08/2011";
        String dataAdmissao = "20/08/2011";
        dataDesligamentoInvalida(dataDesligamento, dataAdmissao);
    }
    
    @Test(expected = EmpregadoException.class) 
    public void testDataDesligamentoMenorDataAdmissao() throws EmpregadoException, Exception, ParseException {
        String dataDesligamento = "10/01/2000";
        String dataAdmissao = "13/02/2001";
        dataDesligamentoInvalida(dataDesligamento, dataAdmissao);
    }
    
    @Test
    public void testDataDesligamentoMaiorDataAdmissao() throws EmpregadoException, Exception, ParseException {
        String dataDesligamento = "31/09/2011";
        String dataAdmissao = "28/02/1978";
        dataDesligamentoValida(dataDesligamento, dataAdmissao);
    }
    
    private void dataDesligamentoValida(String dataDesligamento, String dataAdmissao) throws EmpregadoException, Exception, ParseException {
    	EmpregadoValidationHelper empregadoValidationHelper = new EmpregadoValidationHelper();    
        boolean valido =empregadoValidationHelper.validaDataAdmissao(dataDesligamento, dataAdmissao);
        assertEquals(true, valido);
    }
    
    private void dataDesligamentoInvalida(String dataDesligamento, String dataAdmissao) throws EmpregadoException, ParseException {
    	EmpregadoValidationHelper empregadoValidationHelper = new EmpregadoValidationHelper();    
        boolean invalido = empregadoValidationHelper.validaDataAdmissao(dataDesligamento, dataAdmissao);
    }
    
}
